package com.pureut.production.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.production.domain.LineStock;
import com.pureut.production.domain.dto.LineStockDto;
import com.pureut.production.domain.dto.LineStockSummaryDto;
import com.pureut.production.domain.vo.LineStockVo;
import com.pureut.production.domain.vo.UpdateLineStockStatusVo;

import java.util.List;

/**
 * @Author hl
 **/
public interface ILineStockService extends IService<LineStock> {

    /**
     * 查询线别库存
     * @param lineStockVo
     * @return
     */
    List<LineStockDto> selectLineStockList(LineStockVo lineStockVo);

    /**
     * 新增线别库存
     * @param lineStock
     * @return
     */
    int insertLineStock(LineStock lineStock);

    /**
     * 查询线别库存汇总
     * @param lineStockVo
     * @return
     */
    List<LineStockSummaryDto> selectLineStockSummaryList(LineStockVo lineStockVo);

    /**
     * 根据物料号码获取线边库存数据（fegin调用）
     */
    LineStockDto getLineStockData(String materialNumber);

    /**
     * 查询线边仓数据（冻结列表查询 feign调用）
     */
    List<LineStockDto> getLineStockList(LineStockVo lineStockVo);

    /**
     * 批量修改线边仓数据状态 feign调用
     */
    boolean updateLineStockStatus(UpdateLineStockStatusVo updateLineStockStatusVo);

    /**
     * 通过物料号码修改线边仓物料冻结状态
     */
    void updateStatusThaw(String materialNumber);

    /**
     * 新增线边仓数据
     * @param lineStock
     * @return
     */
    boolean addLineStock(LineStock lineStock);

    boolean addBatchLineStock(List<LineStock> list);

    /**
     * 删除线边仓库存
     * @param materialNumber
     * @return
     */
    boolean deleteLineStock(String materialNumber);

    /**
     * 批量删除线边仓数据
     * @param wareAlCode
     * @return
     */
    boolean deleteBatchLineStock(String wareAlCode);
}
